Embodiments of the inventive concept relate generally to semiconductor memory devices, and more particularly, to nonvolatile semiconductor memory devices and related methods of programming.
Semiconductor memory devices can be roughly divided into two categories based on whether they retain stored data when disconnected from power. These categories include volatile memory devices, which lose stored data when disconnected from power, and nonvolatile memory devices, which retain stored data when disconnected from power.
Examples of volatile memory devices include dynamic random access memory (DRAM), static random access memory (SRAM), and examples of nonvolatile memory devices include electrically erasable programmable read only memory (EEPROM), ferroelectric random access memory (FRAM), phase-change random access memory (PRAM), magnetoresistive random access memory (MRAM), and flash memory.
In recent years, there has been an increase in the number of devices employing nonvolatile memory devices. As examples, nonvolatile memory devices are being used increasingly in MP3 players, digital cameras, cellular phones, camcorders, flash cards, solid state drives (SSDs), to name but a few. In addition, there has also been an increase in the overall storage capacity of nonvolatile memory devices, resulting in a tremendous amount of nonvolatile data storage in use today.
The storage capacity of a nonvolatile memory device may be further increased by storing more than one bit of data in each memory cell. Nonvolatile memory devices storing more than one bit of data in each memory cell are called multi-level cell (MLC) devices because the memory cells store multiple levels of data, e.g., lower level bits, upper level bits, mid-level bits, and so on.
Unfortunately, conventional programming methods for MLC devices may produce errors for any of several reasons. For instance, in some devices, the programming of upper level bits may interfere with lower level bits that have already been programmed. Such interference may occur, for example, where power is lost during programming of the upper level bits, or programming of the upper level bits fails. Under certain circumstances, these events may even cause lower level bits to be overwritten or flipped.